package edu.fasta.sisinfo2.juegos;

import edu.fasta.sisinfo2.poker.Carta;


public class Full implements Juego {
	
	private Trio elTrio = new Trio(null);
	private Par elPar = new Par(null);
	
	public Full(Trio unTrio, Par unPar){
		this.setElTrio(unTrio);
		this.setElPar(unPar);
	}

	public Juego compararJuego(EscaleraReal unaEscaleraReal){
		return unaEscaleraReal;
	}
	
	public Juego compararJuego(EscaleraColor unaEscaleraColor){
		return unaEscaleraColor;
	}
	
	public Juego compararJuego(Poker unPoker){
		return unPoker;
	}
	
	public Juego compararJuego(Full unFull){

		if( unFull.getElTrio().compararJuego(this.getElTrio()) != null ){ //si los trios no son iguales
			//si alguno de los trios es de A
			if( (((Carta) (this.getElTrio().getCartas().get(0))).getPuntaje() == 1) &&  (((Carta) (unFull.getElTrio().getCartas().get(0))).getPuntaje() != 1 ) ){
				return this;
			}else{
				if( (((Carta) (this.getElTrio().getCartas().get(0))).getPuntaje() != 1) &&  (((Carta) (unFull.getElTrio().getCartas().get(0))).getPuntaje() == 1 ) ){
					return unFull;
				}
			}
			//Si ninguno de los trios es de A
			if( ( (Carta) (this.getElTrio().getCartas().get(0) )).getPuntaje()  >  ( (Carta) (unFull.getElTrio().getCartas().get(0))).getPuntaje() ){
				return this;
			}else{
				return unFull;
			}
		}else{ //los trios son iguales, comparo los pares
			if( unFull.getElPar().compararJuego(this.getElPar()) != null){ //si los pares no son iguales
				//si alguno de los pares es de A
				if( (((Carta) (this.getElPar().getCartas().get(0))).getPuntaje() == 1) &&  (((Carta) (unFull.getElPar().getCartas().get(0))).getPuntaje() != 1 ) ){
					return this;
				}else{
					if( (((Carta) (this.getElPar().getCartas().get(0))).getPuntaje() != 1) &&  (((Carta) (unFull.getElPar().getCartas().get(0))).getPuntaje() == 1 ) ){
						return unFull;
					}
				}
				//Si ninguno de los trios es de A
				if( ( (Carta) (this.getElPar().getCartas().get(0) )).getPuntaje()  >  ( (Carta) (unFull.getElPar().getCartas().get(0))).getPuntaje() ){
					return this;
				}else{
					return unFull;
				}
			}
		}
		return null;
	}
	
	public Juego compararJuego(Color unColor){
		return this;
	}
	
	public Juego compararJuego(Escalera unaEscalera){
		return this;
	}
	
	public Juego compararJuego(Trio unTrio){
		return this;
	}
	
	public Juego compararJuego(DoblePar unDoblePar){
		return this;
	}
	
	public Juego compararJuego(Par unPar){
		return this;
	}
	
	public Juego compararJuego(CartaAlta unaCartaAlta){
		return this;
	}

	public Trio getElTrio() {
		return elTrio;
	}

	public void setElTrio(Trio elTrio) {
		this.elTrio = elTrio;
	}

	public Par getElPar() {
		return elPar;
	}

	public void setElPar(Par elPar) {
		this.elPar = elPar;
	}


	
}
